package com.gel.shortLink.admin.common.biz;

import com.alibaba.ttl.TransmittableThreadLocal;

import java.util.Optional;

//用户上下文（Threadlocal存储用户上下文）
public class UserContext {
    private static final ThreadLocal<UserInfoDTO> USER_THREAD_LOCAL = new TransmittableThreadLocal<>();


    /*设置用户上下文*/
    public static void setUser(UserInfoDTO user){
        USER_THREAD_LOCAL.set(user);
    }
    /*获取用户id*/
    public static String getUserId(){
        UserInfoDTO userInfoDTO = USER_THREAD_LOCAL.get();
        return Optional.ofNullable(userInfoDTO).map(UserInfoDTO::getId).orElse( null);
    }
    /*获取用户名*/
    public static String getUsername(){
        UserInfoDTO userInfoDTO = USER_THREAD_LOCAL.get();
        return Optional.ofNullable(userInfoDTO).map(UserInfoDTO::getUsername).orElse( null);
    }
    /*获取用户真实名字*/
    public static String getRealName(){
        UserInfoDTO userInfoDTO = USER_THREAD_LOCAL.get();
        return Optional.ofNullable(userInfoDTO).map(UserInfoDTO::getRealName).orElse( null);
    }
    /*清理用户上下文*/
    public static void clear(){
        USER_THREAD_LOCAL.remove();
    }
}
